import axios from "axios";
// import {Auth} from "@/store/auth";
// import {Message} from "element-ui";

import router from '../router';

const host =
    process.env.NODE_ENV === 'production' || process.env.VUE_APP_ENV === 'production'
        ? '/api'
        : 'http://localhost:8234';

// 不需要拦截的路由路径
// const whiteList = ['/login', '/register'];
// 不需要token的接口
// const noAuthUrls =['/login', '/register'];
// 请求拦截器
axios.interceptors.request.use(
    (config) => {
    // if (config.url !== host+"/login") {
    //   if (config.url !== host+"/register") {
    //     //如果存在token，请求携带token
    //     if (localStorage.getItem("Token")){
    //       config.headers["token"] = localStorage.getItem("Token");
    //       console.log("token", config.headers)
    //     }
    //     if (localStorage.getItem("Token")==null){
    //       // Message.error({ message: "请先登录" });
    //       router.push("/login");
    //     }
    //   }
    // }
    return config;
        // 判断当前请求接口是否需要token
        // if (!noAuthUrls.includes(config.url)) {
        //     const token = localStorage.getItem("Token");
        //     if (token) {
        //         config.headers["token"] = token;
        //     } else {
        //         // 判断当前路由是否在白名单中
        //         const currentPath = router.currentRoute.path;
        //         if (!whiteList.includes(currentPath)) {
        //             Message.error("请先登录");
        //             router.push("/login");
        //             return Promise.reject(new Error('请先登录'));
        //         }
        //     }
        // }
        // return config;
  },
  (error) => {
    // Message.error({ message: error });
      // 对请求错误做些什么
      console.log("到达此处")
      return Promise.reject(error);
  }

);

// 添加响应拦截器
axios.interceptors.response.use(
    function (response) {
      console.log(response)
        if (response.status && response.status === 200) {
      if (
        response.data.code === 500 ||
        response.data.code === 401 ||
        response.data.code === 403
      ) {
        //接口请求成功，业务逻辑错误
        // Message.error({ message: response.data.message });
        return response;
      }
          if (response.data.message !== "查询成功")
            // Message.success({ message: response.data.message });
            console.log
    }
      return response;
},
    function (error){
      console.log(Promise.reject(error))
      if (error.status === 401){
        // Message.error({ message: "请先登录" });
        router.push("/login");
      } else {
          // Message.error({ message: "服务异常" });
      }
        console.log(error)
      return Promise.reject(error);
    }
)

//
// //api接口 响应成功 / 响应失败 【响应拦截器】
// //后端提供：响应码，响应信息，对象
// axios.interceptors.response.use(
//   (success) => {
//     if (success.status && success.status == 200) {
//       if (
//         success.data.code == 500 ||
//         success.data.code == 401 ||
//         success.data.code == 403
//       ) {
//         //接口请求成功，业务逻辑错误
//         Message.error({ message: success.data.message });
//         return;
//       }
//       if (success.data.message) {
//         Message.success({ message: success.data.message });
//       }
//     }
//     return success.data;
//   },
//   (error) => {
//     if (error.response.code == 504 || error.response.code == 404) {
//       Message.error({ message: "服务器出错" });
//     } else if (error.response.code == 403) {
//       Message.error({ message: "权限不足，请联系管理员" });
//     } else if (error.response.code == 401) {
//       Message.error({ message: "请登录账号" });
//       router.replace("/");
//     } else {
//       if (error.response.message) {
//         Message({ message: error.response.message });
//       } else {
//         Message({ message: "未知错误" });
//       }
//     }
//   }
// );

//封装请求


//post
export const postRequest = (url, params) => {
  return axios({
    method: "post",
    url: `${host}${url}`,
    data: params,
  });
};

//put
export const putRequest = (url, params) => {
  return axios({
    method: "put",
    url: `${host}${url}`,
    data: params,
  });
};

//get
export const getRequest = (url, params) => {
  return axios({
    method: "get",
    url: `${host}${url}`,
    params: params,
  });
};

//del
export const deleteRequest = (url, params) => {
  return axios({
    method: "delete",
    url: `${host}${url}`,
    data: params,
  });
};
